package types

import (
	"github.com/zeromicro/go-zero/rest/httpx"
)

// 错误代码定义
const (
	ErrInternalServer     = 10000 // 服务器内部错误
	ErrInvalidParam       = 10001 // 请求参数错误
	ErrUnauthorized       = 10002 // 未授权访问
	ErrForbidden          = 10003 // 禁止访问
	ErrUserNotFound       = 10004 // 用户不存在
	ErrEmailExists        = 10005 // 邮箱已存在
	ErrInvalidCredentials = 10006 // 无效的凭证
	ErrInvalidToken       = 10007 // 无效的令牌
	ErrTokenGeneration    = 10008 // 令牌生成失败
	ErrInvalidRole        = 10009 // 无效的角色
)

// 错误响应结构
type ErrorResponse struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

// 创建错误响应
func NewErrorResponse(code int, message string) *ErrorResponse {
	return &ErrorResponse{
		Code:    code,
		Message: message,
	}
}

// 自定义错误处理
func NewCodeError(code int, message string) error {
	return httpx.NewCodeError(code, message)
}
